Technote 1168

The Care And Feeding of Runtime.exec


ñ⁄éü

Runtime.exec ÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄàÀë∂

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ÷ÇÃÉpÉX

à¯êîÇÃê›íË

Java ÇÃãNìÆ

Process ÉIÉuÉWÉFÉNÉgÇÃèàóù

ÉTÉìÉvÉã: ÉuÉâÉEÉUÇ≈Çà URL ÇÃÉIÅ[ÉvÉì

R untime.exec( ) ÇÕǮǪÇÁÇ≠ÅAJava API ÉZÉbÉgÇÃíÜÇ≈LJÉNÉçÉXÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ≈ÇÃå›ä∑ê´Ç™ñRǵǢïîï™Çà 1 ǬÇ≈Ç∑ÅBRuntime.exec( ) Ç≈ÇÕÅAOS Ç÷ÇÃÉRÉ}ÉìÉhÉâÉCÉìÉCÉìÉ^ÉtÉFÅ[ÉXÇÃë∂ç›ÇΔÅAîCà”ÇÃÉpÉâÉÅÅ[É^ÇéÛÇØéÊÇÈDZÇΔÇÃÇ≈Ç´ÇÈîCà”ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇãNìÆÇ∑ÇÈã@î\ÇëOíÒÇΔǵNjÇ∑ÅBÇΔÇÕǢǶÅARuntime.exec( ) ÇégópÇµÇ»ÇØÇÍnjǻÇÁǻǢã@âÔÇÕǩǻÇËdžÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅAWeb ÉuÉâÉEÉUÇ≈ URL ÇÉIÅ[ÉvÉìǵÇΩÇËÅAêVǵǢ Java ÉvÉçÉZÉXÇî≠ê∂Ç≥ÇπÇÈèÍçáÇ…ÇÕ Runtime.exec( ) Ç™ïKóvÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕÅAMRJ 2.1 Çà Runtime.exec ÇÃÉCÉìÉvÉäÉÅÉìÉeÅ[ÉVÉáÉìÇΔÅAǪÇÍÇ™ JDK ÇÃÉCÉìÉvÉäÉÅÉìÉeÅ[ÉVÉáÉìÇΔÇ«ÇÃÇÊǧǻì_Ç™àŸÇ»ÇÈǩDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB


Runtime.execÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄàÀë∂

ïWèÄ Java ÇÃÉÅÉ\ÉbÉhÇ≈džÇÈRuntime.exec ÇÕÅAǪÇÍÇ™é¿çsÇ≥ÇÍǃǢÇÈÉ}ÉVÉìè„Ç≈êVǵǢÉvÉçÉZÉXÇãNìÆÇµÇ‹Ç∑ÅBRuntime.exec Ç…ÇÕÅAÉXÉyÅ[ÉXÇ≈ãÊêÿÇ¡ÇΩà¯êîÇÃï∂éöóÒÇ‹ÇΩÇÕà¯êîï∂éöóÒÇÃîzóÒÇà¯êîÇΔÇ∑ÇÈÉRÉ}ÉìÉhÉâÉCÉìÇìnǵNjÇ∑ÅBÅwThe Java Class LibrariesÅxÇ…ÇÕÅAéüÇÃÇÊǧǻê‡ñæÇ™Ç†ÇËÇ‹Ç∑ÅB

ÅuDZÇÃÉÅÉ\ÉbÉhÇÕÅAà¯êîÇ≈éwíËǵÇΩÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…àÀë∂Ç∑ÇÈÉvÉçÉOÉâÉÄÇé¿çsǵNjÇ∑ÅBé¿çsÇ∑ÇÈÉvÉçÉOÉâÉÄÇÕÅAÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…àÀë∂Ç∑ÇÈê‚ëŒÉpÉXñºÇégǡǃéwíËÇ∑ÇÈÇ©ÅAÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…àÀë∂Ç∑ÇÈåüçıÉpÉXÇégǡǃåüèoÇ≥ÇÍÇÈÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…àÀë∂Ç∑ÇÈÉRÉ}ÉìÉhñºÇΔǵǃéwíËÇ≈Ç´Ç‹Ç∑ÅBÅv

Åuexec ÇÕ Process ÉIÉuÉWÉFÉNÉgÇï‘ǵÅADZÇÍÇÕÅAêVǵÇ≠çÏê¨Ç≥ÇÍÇΩÉvÉçÉZÉXÇÃïWèÄì¸óÕÅAïWèÄèoóÕÅAÇ®ÇÊÇ—ïWèÄÉGÉâÅ[ (ÉXÉgÉäÅ[ÉÄ) ÇéÊìæÇ∑ÇÈÇΩÇflÇÃÉÅÉ\ÉbÉhÇéùÇøÇ‹Ç∑ÅBÅv(ëæéöÇ…ÇÊÇÈã≠í≤ÇÕDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÃíòé“Ç™í«â¡ÇµÇ‹ÇµÇΩ)

DZÇÃê‡ñæÇÃíÜÇ≈ÇÕÅADZÇÃÉÅÉ\ÉbÉhÇÃìÆçÏÇÃëÂïîï™Ç™ÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…àÀë∂Ç∑ÇÈÇΔǢǧDZÇΔÇî˜ñ≠Ç»ï\åªÇ≈à√Ç…é¶ÇªÇ§ÇΔǵǃǢNjÇ∑ (ǵǩLJÅADZDZÇ≈åæãyÇ≥ÇÍǃǢÇÈÅuïWèÄÅvÉXÉgÉäÅ[ÉÄÇ≈Ç≥ǶÅAMac OS Ç≈ÇÕNjǡÇΩÇ≠ïWèÄÇ≈ÇÕdžÇËÇ‹ÇπÇÒ)ÅB

ǵÇΩǙǡǃÅADZÇÃÉÅÉ\ÉbÉhÇégópÇ∑ÇÈèÍçáÅAç≈èIìIÇ…äÆê¨ÇµÇΩÉRÅ[ÉhÇ™àÍïîÇÃÉIÉyÉåÅ[ÉeÉBÉìÉOÉVÉXÉeÉÄÇ≈ÇÕNjǡÇΩÇ≠é¿çsÇ≈ǴǻǢǩÅAdžÇÈÇ¢ÇÕê≥ǵÇ≠é¿çsÇ≈ǴǻǢÇΔǢǧDZÇΔÇÕóeà’Ç…ëzëúÇ≈Ç´Ç‹Ç∑ÅBUnix Ç‚ Windows ÇΔÇÕàŸÇ»ÇËÅAMac OS ÇÕÅAÉRÉ}ÉìÉhÉâÉCÉìÉxÅ[ÉXÇà OS ÇÃè„Ç…îñÇ¢ GUI ÇÃâªèœî¬Çì\ÇËïtÇØÇΩLJÇÃÇ≈ÇÕǻǢÇΩÇflÅADZÇÃÉÅÉ\ÉbÉhÇÃégópÇ…ÇÕïsìsçáǙdžÇËÇ‹Ç∑ÅBMac OS ǪÇÃLJÇÃÇ…ÇÕÉRÉ}ÉìÉhÉâÉCÉìÇÃÇÊǧǻLJÇÃÇÕë∂ç›ÇµÇ»Ç¢ÇΩÇflÅAMRJ Ç™ëzëúóÕñLǩǻÉfÉxÉçÉbÉpÇ…ÇÊÇÈ Runtime.exec ÇÃÇ≥NjǥNjǻégópï˚ñ@ÇÉTÉ|Å[ÉgÇ∑ÇÈDZÇΔÇÕǩǻÇËç¢ìÔÇ≈Ç∑ÅB

ÇΔÇÕǢǧLJÇÃÇÃÅAApple Ç≈ÇÕÇ≥NjǥNjǻééÇ›ÇçsÇ¢ÅAǪÇÍà»ëOÇÃÉoÅ[ÉWÉáÉìÇΔî‰ärÇ∑ÇÈÇΔÅAMRJ 2.1 Ç™ÇÊÇËëΩÇ≠Çà Runtime.exec ÇÃìTå^ìIÇ»égÇ¢ï˚ÇÉTÉ|Å[ÉgǵǃǢÇÈÇΔǢǧDZÇΔÇ™ñæÇÁǩDžǻÇËNjǵÇΩÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕÅAMRJ 2.1 Ç…ÇÊǡǃÉTÉ|Å[ÉgÇ≥ÇÍǃǢÇÈDZÇΔÇΔÅAÉTÉ|Å[ÉgÇ≥ÇÍǃǢǻǢDZÇΔÇè⁄ç◊Ç…ê‡ñæÇµÇ‹Ç∑ÅB

JConfig

ÉTÅ[ÉhÉpÅ[ÉeÉBÇÃÉRÅ[Éh (ÉlÉCÉeÉBÉuÉâÉCÉuÉâÉäÇä‹Çfi) ÇëgÇ›çûÇ›ó\íËǙdžÇÈèÍçáÇÕÅASamizdat Productions ÇÃÉtÉäÅ[ÉEÉFÉAÇ≈džÇÈ JConfig ÉâÉCÉuÉâÉäÇÃçÃópÇåüì¢Ç∑ÇÈDZÇΔÇÇ®Ç∑Ç∑ÇflǵNjÇ∑ÅB

JConfig ÇÕÅAÅuÉRÉA Java API Çã≠âªÇ∑ÇÈÉNÉçÉXÉvÉâÉbÉgÉtÉHÅ[ÉÄÉâÉCÉuÉâÉäÇ≈Ç∑ÅBJConfig ÇégópÇ∑ÇÈÇΔÅAïWèÄ Java ÉNÉâÉXÉâÉCÉuÉâÉäÇ…ÇÊǡǃíÒãüÇ≥ÇÍǃǢÇÈï˚ñ@ÇÊÇËLJÇÕÇÈǩDžêÊêiìIÇ»ï˚ñ@Ç≈ÅAÉtÉ@ÉCÉãÅAWeb ÉuÉâÉEÉUÅAÉvÉçÉZÉXÅAÉtÉ@ÉCÉãÉ^ÉCÉvÅAÇ®ÇÊǗǪÇÃëºÇÃÉVÉXÉeÉÄÉåÉxÉãÇÃçÄñ⁄ÇëŒè€ÇΔÇ∑ÇÈçÏãΔÇçsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÅv(É}ÉjÉÖÉAÉãÇÊÇË)

JConfig ÇÕRuntime.exec ÇÊÇËLJÇÕÇÈǩDžã≠óÕÇ≈džÇËÅAJConfig ÇégópÇ∑ÇÈDZÇΔÇ≈ÅAÉÜÅ[ÉUÇ™í èÌégópǵǃǢÇÈ Web ÉuÉâÉEÉUÅAdžÇÈÇ¢ÇÕîCà”Çà URL É^ÉCÉvÇ…ëŒâûǵÇΩÉÜÅ[ÉUÇÃçDÇfiÉwÉãÉpÅ[ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃåüçıǻǫÅAàµÇ¢Ç…Ç≠Ç≠ÅAÇÊÇËçÇÉåÉxÉãÇ»ñ‚ëËÇéÊÇËàµÇ§Ç±ÇΔÇ™Ç≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB JConfig ÇÕÅAMac OSÅAWindowsÅAÇ®ÇÊÇ— Unix è„Ç≈é¿çsÇ≈Ç´ÅAǵǩLJ MRJ ÇégǡǃäJî≠ÇçsǧëΩêîÇÃÉfÉxÉçÉbÉpÇ™JConfig ÇêÑèßǵǃǢNjÇ∑ (Ç‡ÇøÇÎÇÒÅAApple Ç…ÇÕ JConfig Ç‹ÇΩÇÕ Samizdat Productions ÇΔÇÃåˆéÆÇ»íÒågä÷åWǙdžÇÈÇÌÇØÇ≈ÇÕÇ»Ç≠ÅADZÇÃÉâÉCÉuÉâÉäÇÃêMóäê´Çï€èÿÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹ÇπÇÒÅBǵǩǵÅAApple Ç≈ÇÕDZÇÃêªïiÇ™ÅuÉNÅ[ÉãÅvÇ≈džÇÈÇΔçlǶǃǢNjÇ∑)ÅB


Back to top

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ÷ÇÃÉpÉX

Mac OS Ç…ÇÕåüçıÉpÉXÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÃÇΩÇflÅAé¿ç€ÇÃÉtÉ@ÉCÉãÉpÉXÇégǡǃÉAÉvÉäÉPÅ[ÉVÉáÉìÇéwíËÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅAÅunetscapeÅvÇΔǢǧÉAÉvÉäÉPÅ[ÉVÉáÉìÇíºê⁄éQèΔÇ∑ÇÈDZÇΔÇÕïsâ¬î\Ç≈Ç∑ÅBǵǩǵÅADZÇÃèàóùÇé¿çsÇ∑ÇÈÇΩÇflÇ…ÇÕÇ¢Ç≠ǬǩÇÃï˚ñ@Ç™ópà”Ç≥ÇÍǃǢNjÇ∑ÅB

ëäëŒÉpÉX

ãNìÆÇµÇÊǧÇΔǵǃǢÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™é¿çsíÜÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇäÓèÄÇΔÇ∑ÇÈä˘ímÇÃà íuDždžÇÈèÍçáÇÕ (ǬNjÇËÅAóºï˚ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ìØàÍÇÃÉCÉìÉXÉgÅ[ÉãÉtÉ@ÉCÉãÇÃàÍïîÇ≈džÇÈèÍçá)ÅAåªç›ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇäÓèÄÇΔÇ∑ÇÈÉpÉXÇéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃï˚ñ@ÇÕÅAJBindery ÇégǡǃÉrÉãÉhǵÇΩÉAÉvÉäÉPÅ[ÉVÉáÉìÇé¿çsǵǃǢǃÅAñ⁄ìIÇÃÉRÅ[ÉhÇ JBindery ǪÇÃLJÇÃÇ©ÇÁíºê⁄é¿çsǵǻǢèÍçáÇæÇØÅAêMóäÇ≈Ç´ÇÈìÆçÏÇçsǢNjÇ∑ÅB

ÉÜÅ[ÉUèâä˙ê›íË

ãNìÆÇ∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ìΔé©ÇÃÉCÉìÉXÉgÅ[ÉãÉtÉ@ÉCÉãÇÃàÍïîÇ≈ǻǢèÍçáÇÕ (ÇΩÇΔǶnjÅAǪÇÍÇ™ SimpleText Ç‚ Web ÉuÉâÉEÉUÇÃÇÊǧǻïWèÄìIÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈džÇÈèÍçá)ÅAê‚ëŒÉpÉXÇéwíËÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

ê‚ëŒÉpÉXÇéwíËÇ∑ÇÈè„Ç≈ÅAç≈LJçáóùìIǩǬÉNÉçÉXÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…ëŒâûǵÇΩï˚ñ@ÇΔǢǶnjÅAÉpÉXÇèâä˙ê›íËÉtÉ@ÉCÉãÇ…äiî[Ç∑ÇÈDZÇΔÇ≈Ç∑ÅBèâä˙ê›íËÇ™Ç‹Çæë∂ç›ÇµÇ»Ç¢èÍçáÅAdžÇÈÇ¢ÇÕèâä˙ê›íËÉtÉ@ÉCÉãÇ…äiî[Ç≥ÇÍǃǢÇÈÉpÉXÇégópǵÇÊǧÇΔǵǃǧNjÇ≠ǢǩǻǢèÍçáÇÕÅAÉ_ÉCÉAÉçÉOÉ{ÉbÉNÉXÇï\é¶ÇµÇƒÉÜÅ[ÉUÇ…ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃëIëÇóvãÅǵÅAǪÇÃÉpÉXÇèâä˙ê›íËÉtÉ@ÉCÉãÇ…äiî[ǵǃÇ≠ÇæÇ≥Ç¢ÅBèâä˙ê›íËÉtÉ@ÉCÉãÇégǡǃê≥ǵǢÉpÉXÇê›íËÇ∑ÇÈï˚ñ@DžǬǢǃÇÕÅAÅuTechnote 1134 The Preferences ProblemÅvÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB

ÉNÉäÉGÅ[É^Ç…ÇÊÇÈåüçı

Mac å≈óLÇÃÉRÅ[ÉhÇégópÇ∑ÇÈǬLJÇËǙdžÇÈèÍçáÇÕÅAMac OS ìΔé©ÇÃédëgÇ›ÇégópǵÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉNÉäÉGÅ[É^ÉRÅ[ÉhÇéwíËǵǃÉAÉvÉäÉPÅ[ÉVÉáÉìÇé©ìÆìIÇ…åüçıÇ∑ÇÈÇÃÇ™ñ]NjǵǢï˚ñ@ÇΔǢǶNjÇ∑ÅBÉNÉäÉGÅ[É^ÉRÅ[ÉhÇΔÇÕÅAǪÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…äÑÇËìñǃÇÁÇÍǃǢÇÈ 4 ï∂éöÇÃàÍà”Ç»ÉRÅ[ÉhÇÃDZÇΔÇ≈Ç∑ÅB

îCà”ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉNÉäÉGÅ[É^ÇímÇÈÇ…ÇÕÅAResEdit ÇÃÅuGet File/Folder InfoÅvÉRÉ}ÉìÉhÇégópǵNjÇ∑ÅBéüÇ…ÅAÇÊÇ≠égópÇ≥ÇÍÇÈÇ¢Ç≠ǬǩÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉNÉäÉGÅ[É^Çé¶ÇµÇ‹Ç∑ÅB

Microsoft Internet Explorer

MWIE

Netscape Navigator

MOSS

SimpleText

ttxt

Finder

FNDR

MRJ SDK (ëÂïîÇ»É}ÉjÉÖÉAÉãÇä‹Çfi) ÇÃàÍïîÇΔǵǃíÒãüÇ≥ÇÍǃǢÇÈ MRJToolkit ÉâÉCÉuÉâÉäÇ…ÇÕÅAÉNÉäÉGÅ[É^ÉRÅ[ÉhÇà¯êîÇΔǵǃéÊÇËÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇéwÇ∑ File ÉIÉuÉWÉFÉNÉgÇï‘Ç∑ findApplication ÉÅÉ\ÉbÉhÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÃÉÅÉ\ÉbÉhÇÕéüÇÃÇÊǧDžégópǵNjÇ∑ÅB

import com.apple.mrj.*;               
...
                  
File app = MRJFileUtils.findApplication(new MRJOSType("ttxt"));

JConfig Ç…ÇÊÇÈé©ìÆìIÇ»åüçı

Samizdat Productions Ç©ÇÁíÒãüÇ≥ÇÍǃǢÇÈ JConfig ÉâÉCÉuÉâÉäÇ…ÇÕÅAîCà”Çà URL ÇÃÉ^ÉCÉvÇ…ëŒâûǵÇΩÉÜÅ[ÉUÇ™çDÇfiÉwÉãÉpÅ[ÉAÉvÉäÉPÅ[ÉVÉáÉìÇåüçıÇ∑ÇÈã@î\Ç™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÃèàóùÇÕÅARuntime.exec ÇÃç≈LJàÍî ìIÇ»égÇ¢ï˚Çà 1 ǬÇ≈Ç∑ÅB


Back to top

à¯êîÇÃê›íË

Mac OS Ç≈ÇÕÅAAppleEvent ÇΔåƒÇŒÇÍÇÈÉÅÉJÉjÉYÉÄÇégǡǃÅAÉvÉçÉZÉXÇ©ÇÁï ÇÃÉvÉçÉZÉXÇ…ÉÅÉbÉZÅ[ÉWÇëóêMǵNjÇ∑ÅBAppleEvent ÇÕÅAÉRÉ}ÉìÉhÉâÉCÉìà¯êîÇÊÇËLJÇÕÇÈǩDžçÇÉåÉxÉãÇ≈džÇËÅAǵǩLJñLïxÇ»ÉfÅ[É^å^ÇΔÉ^ÉOÇÃÉZÉbÉgÇä‹ÇÒÇ≈ǢNjÇ∑ÅBǵǩǵÅADZÇÃDZÇΔÇÕÅAMRJ Ç™îCà”ÇÃà¯êîï∂éöóÒÇéÛÇØïtÇØÇÈDZÇΔÇ™Ç≈Ç´Ç∏ÅAà¯êîï∂éöóÒÇà”ñ°ÇÃdžÇÈï˚ñ@Ç≈ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ëóêMÇ∑ÇÈDZÇΔÇ™Ç≈ǴǻǢÇΔǢǧDZÇΔÇà”ñ°ÇµÇ‹Ç∑ (ç≈èâÇÃÉZÉNÉVÉáÉìÇÃÅuÉvÉâÉbÉgÉtÉHÅ[ÉÄàÀë∂ÅvÇ…ä÷Ç∑ÇÈê‡ñæÇévÇ¢èoǵǃÇ≠ÇæÇ≥Ç¢)ÅB

MRJ Ç≈ÇÕÅAÇÊÇ≠égópÇ≥ÇÍÇÈì¡íËÇÃÉRÉ}ÉìÉhÉâÉCÉìà¯êîÇÃÉ^ÉCÉvÇåüèoǵÅAǪÇÍÇÁÇ AppleEvent Ç…ïœä∑ǵÇÊǧÇΔǵNjÇ∑ÅBàÍî Ç…ÅAMRJ Ç™îFéØÇ≈Ç´ÇÈà¯êîÇÃÉ^ÉCÉvÇÕÅAÉtÉ@ÉCÉãÉpÉXÇΔ URL Çà 2 ǬÇ≈Ç∑ÅBÉRÉçÉì (:) Çä‹Çfià¯êîÇÕ URL Ç≈džÇÈÇΔâéflÇ≥ÇÍÅAǪÇÃëºÇÃà¯êîÇÕÉtÉ@ÉCÉãÉpÉXÇ≈džÇÈÇΔâéflÇ≥ÇÍÇ‹Ç∑ (ÇΔÇÕǢǶÅADZÇÍÇÁÇÃãKë•ÇÕÅAï Çà Java ÉvÉçÉZÉXÇãNìÆÇ∑ÇÈÇΔÇ´Ç…ÇÕìKópÇ≥ÇÍÇ‹ÇπÇÒÅBè⁄ç◊DžǬǢǃÇÕÅAéüÇÃÉZÉNÉVÉáÉìÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢)ÅB

íçà”:
ÉoÅ[ÉWÉáÉìÇ™ 2.1 ÇÊÇËëOÇà MRJ Ç≈ÇÕÅAURL ÉpÉâÉÅÅ[É^ÇÕÉTÉ|Å[ÉgÇ≥ÇÍǃǮÇÁÇ∏ÅAÇ∑Ç◊ǃÇÃà¯êîÇ™íPèÉÇ…ÉtÉ@ÉCÉãÉpÉXÇΔå©Ç»Ç≥ÇÍÇ‹Ç∑ÅB

(AppleEvent savvy Ç≈džÇÈÇΩÇflÇ…ÇÕÅAÉtÉ@ÉCÉãÉpÉXÇÕíPàÍÇà 'odoc' ÉCÉxÉìÉgÇΔǵǃëóêMÇ≥ÇÍÅAURL ÇÕå¬ï ÇÃ'GURL' ÉCÉxÉìÉgÇΔǵǃëóêMÇ≥ÇÍÇÈDZÇΔÇímǡǃǮÇ≠ïKóvǙdžÇËÇ‹Ç∑)

Ç¢Ç≠ǬǩÇÃíçà”Ç∑Ç◊Ç´ñ‚ëËǙdžÇËÇ‹Ç∑ÅB

ï°êîâÒÇ…ÇÌÇΩÇÈãNìÆÇçsÇÌǻǢ

Mac OS Ç≈ÇÕÅAìØàÍÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇï°êîâÒÇ…ÇÌÇΩǡǃãNìÆÇ∑ÇÈDZÇΔÇÕãñâ¬Ç≥ÇÍÇ‹ÇπÇÒÅBDZÇÃÇΩÇflÅAé¿çsíÜÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ Runtime.exec ÇåƒÇ—èoÇ∑èÍçáÅAÇ‹ÇΩÇÕìØàÍÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ï°êîâÒÇ…ÇÌÇΩǡǃ Runtime.exec ÇåƒÇ—èoÇ∑èÍçáÇÕÅAǪÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃìØàÍÇÃÉCÉìÉXÉ^ÉìÉXǙǪÇÍǺÇÍÇÃÉäÉNÉGÉXÉgÇéÛÇØéÊÇËÅAǪÇÍǺÇÍÇÃçÄñ⁄ÇÉIÅ[ÉvÉìÇ∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB

í èÌÅAURL ÇÕêVǵǢÉEÉBÉìÉhÉEÇÉIÅ[ÉvÉìǵǻǢ

è≠Ç»Ç≠ÇΔLJ Web ÉuÉâÉEÉUÇÃäµó·ÇΔǵǃÅAêVǵǢÉEÉBÉìÉhÉEÇÉIÅ[ÉvÉìÇ∑ÇÈÇÃÇ≈ÇÕÇ»Ç≠ÅAëOÇÃÉRÉìÉeÉìÉcÇ™íuÇ´ä∑ǶÇÁÇÍǃÅAÉAÉNÉeÉBÉuÉEÉBÉìÉhÉEÇ…ï°êîÇà URL Ç™ï\é¶Ç≥ÇÍÇ‹Ç∑ (ÇΩÇæÇµÅAÉtÉ@ÉCÉãÇÕêVǵǢÉEÉBÉìÉhÉEÇ…ÉIÅ[ÉvÉìÇ≥ÇÍÇ‹Ç∑)ÅBDZÇÍÇÕÅAÉuÉâÉEÉUÇ… URL à¯êîÇëóêMÇ∑ÇÈÇΔÅAǪÇÃëOÇ…ëóêMǵÇΩà¯êîÇÕéñé¿è„ñ≥éãÇ≥ÇÍÇÈÇΔǢǧDZÇΔÇà”ñ°ÇµÇ‹Ç∑ (ÇΩÇΔǶnjÅAÉuÉâÉEÉUÇ… 2 ǬÇà URL ÇìnÇ∑ÇΔÅAÉuÉâÉEÉUÇ≈ÇÕÇ‹Ç∏ëÊ 1 Çà URL Çï\é¶ÇµÇÊǧÇΔǵÅAÇ∑ÇÆÇ…ìØÇ∂ÉEÉBÉìÉhÉEÇ…ëÊ 2 Çà URL Çï\é¶ÇµÇÊǧÇΔǵNjÇ∑ÅBÇ‹ÇΩÅA1 ǬÇÃÉtÉ@ÉCÉãÇΔ 1 ǬÇà URL ÇìnÇ∑ÇΔÅAÉtÉ@ÉCÉãÇï\é¶Ç∑ÇÈÇΩÇflÇ…êVǵǢÉEÉBÉìÉhÉEÇ™ÉIÅ[ÉvÉìǵNjÇ∑Ç™ÅAǪÇÃå„ÅAURL Ç™ìØÇ∂ÉEÉBÉìÉhÉEÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑)ÅB


Back to top

Java ÇÃãNìÆ

Runtime.exec Çégǡǃé¿çsÇ≈Ç´ÇÈç≈LJñÇ…óßǬèàóùÇà 1 ǬǙêVǵǢ Java ÉvÉçÉZÉXÇÃãNìÆÇ≈džÇÈDZÇΔÇÕñæÇÁÇ©Ç≈Ç∑ÅBDZÇÃDZÇΔÇÕÅAãNìÆÇµÇÊǧÇΔǵǃǢÇÈÉRÅ[ÉhÇ…ÅAåªç›ÇÃÉvÉçÉZÉXÇ©ÇÁÇÃäÆëSÇ»ìΔóßê´Çó^ǶÇÈïKóvǙdžÇÈèÍçáÇ…ñóßÇøÇ‹Ç∑ÅBÇΩÇΔǶnjÅAjavac ǻǫÇÃàÍïîÇà Java ÉcÅ[ÉãÇÕÅAÉÅÉÇÉäÇçƒóòópǵÇΩÇËÅAÉtÉ@ÉCÉãÇï¬Ç∂ÇΩÇËÇ∑ÇÈDZÇΔÇÕÇ»Ç≠ÅAé¿ç€ìIÇ»ñ⁄ìIÇÃÇΩÇflÇ…ÅAǪÇÍÇ™èIóπÇ∑ÇÈÇΔÇ´Ç… OS Ç…ÇÊǡǃÉNÉäÅ[ÉìÉAÉbÉvÇ≥ÇÍÇÈìΔóßǵÇΩÉvÉçÉZÉXÇΔǵǃé¿çsÇ≥ÇÍÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

MRJ 2.1 Ç≈ÇÕÅADZÇÃDZÇΔÇÇ≥ÇÁÇ…óòópÇ∑ÇÈÇΩÇflÅAÇ¢Ç≠ǬǩÇÃì¡éÍÇ»ÉPÅ[ÉX (ÅuÉnÉbÉNÅvÇΔLJåƒÇŒÇÍÇ‹Ç∑) Ç™í«â¡Ç≥ÇÍNjǵÇΩÅBêÊì™ÇÃà¯êîÇ≈éwíËǵÇΩÉAÉvÉäÉPÅ[ÉVÉáÉì/ÉRÉ}ÉìÉhÇ™ä˘ë∂ÇÃÉtÉ@ÉCÉãÇéwÇ≥Ç∏ÅAǪÇÃà¯êîÇÃíÜÇ…ÅuJavaÅvÇΔǢǧâ∫à ï∂éöóÒ (ëÂè¨ï∂éöÇÃãÊï Ç»Çµ) Ç™ä‹Ç‹ÇÍǃǢÇÈèÍçáÇÕÅAdžÇΩǩLJÉRÉ}ÉìÉhÉâÉCÉìÇ©ÇÁ JDK ÇåƒÇ—èoǵǃǢÇÈÇ©ÇÃÇÊǧDžÅAJava ÉvÉçÉZÉXÇãNìÆÇµÇÊǧÇΔǵǃǢÇÈLJÇÃÇΔå©Ç»Ç≥ÇÍÇ‹Ç∑ÅB

íçà”:
ÉoÅ[ÉWÉáÉìÇ™ 2.1 ÇÊÇËëOÇà MRJ Ç≈ÇÕÅADZÇÃã@î\ÇÕÉTÉ|Å[ÉgÇ≥ÇÍǃǢNjÇπÇÒÅB

ÇΩÇΔǶnjÅAéüÇÃÇÊǧDž Java ÉRÉìÉpÉCÉâÇåƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

String args = {"java", "sun.tools.javac.Main", ...javac argument list...};
Runtime.getRuntime().exec(args);

ãtDžǢǶnjÅAëŒè€Ç™ Java ÉvÉçÉZÉXÇ≈džÇÈDZÇΔÇ™ÇÌǩǡǃǢÇÈÇΩÇflÅAéüÇÃÇÊǧǻÇÊÇËàÍî ìIÇ»ã@î\LJégópÇ≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB

  • Å@
  • é©óRÇ…îCà”ÇÃà¯êîÇìnÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBà¯êîÇ™ URL Ç‹ÇΩÇÕÉtÉ@ÉCÉãÇ≈džÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÍÇÁÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉÅÉCÉìÉNÉâÉXÇà main() ÉÅÉ\ÉbÉhÇ…ï∂éöóÒÇΔǵǃíºê⁄ìnÇ≥ÇÍÇ‹Ç∑ÅB
  • Process ÉIÉuÉWÉFÉNÉg (è⁄ç◊ÇÕå„èqǵNjÇ∑) ÇégǡǃÅAJava ÉvÉçÉZÉXÇÃïWèÄì¸óÕ/èoóÕ/ÉGÉâÅ[ÉXÉgÉäÅ[ÉÄÇ…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

    Å@

'java' Ç…ìKópÇ≈Ç´ÇÈì¡éÍÇ»ÉtÉâÉO

JDK ÇÃ'java' ÉRÉ}ÉìÉhÇ…ÇÕÅAÇ¢Ç≠ǬǩÇÃÉtÉâÉOÉpÉâÉÅÅ[É^ÇéwíËÇ≈Ç´Ç‹Ç∑ÅB MRJ 2.1 Ç≈ÇÕÅAéüÇÃÉTÉuÉZÉbÉgÇ™ÉTÉ|Å[ÉgÇ≥ÇÍǃǢNjÇ∑ÅB

ÉtÉâÉO

ñ⁄ìI

ÉXÉeÅ[É^ÉX

-help

ÉwÉãÉvÉÅÉbÉZÅ[ÉWÇï\é¶ÇµÇƒèIóπ

ÉTÉ|Å[ÉgçœÇ›

-version

ÉoÅ[ÉWÉáÉìÇï\é¶ÇµÇƒèIóπ

ÉGÉâÅ[

-v

èÁí∑ÉÇÅ[ÉhÇÉIÉìÇ…

ÉGÉâÅ[

-classpath

ÉNÉâÉXåüçıÉpÉXÇê›íË*

ÉTÉ|Å[ÉgçœÇ›

-D

ÉVÉXÉeÉÄÉvÉçÉpÉeÉBÇê›íË

ÉTÉ|Å[ÉgçœÇ›

-X

îÒïWèÄÉIÉvÉVÉáÉìÇ…ä÷Ç∑ÇÈÉwÉãÉvÇï\é¶ÇµÇƒèIóπ

ÉGÉâÅ[

-Xdebug

ÉäÉÇÅ[ÉgÉfÉoÉbÉKÇóLå¯Ç…

ÉGÉâÅ[

-Xnoasyncgc

îÒìØä˙ÉKÅ[ÉxÅ[ÉWÉRÉåÉNÉVÉáÉìÇñ≥å¯Ç…

ÉTÉ|Å[ÉgçœÇ›

-Xnoclassgc

ÉNÉâÉX GC Çñ≥å¯Ç…

ÉTÉ|Å[ÉgçœÇ›

-Xss

ç≈ëÂÇÃÉlÉCÉeÉBÉuÉXÉ^ÉbÉNÉTÉCÉYÇê›íË

ñ≥éã

-Xoss

ç≈ëÂÇà Java ÉXÉ^ÉbÉNÉTÉCÉYÇê›íË

ñ≥éã

-Xms

Java ÉqÅ[ÉvÇÃèâä˙ÉTÉCÉYÇê›íË

ñ≥éã

-Xmx

ç≈ëÂÇà Java ÉqÅ[ÉvÉTÉCÉYÇê›íË

ñ≥éã

-Xprof

ÉÅÉ\ÉbÉhÉvÉçÉtÉ@ÉCÉäÉìÉOÇóLå¯Ç…

ñ≥éã

-Xiprof

ÉCÉìÉXÉgÉâÉNÉVÉáÉìÉvÉçÉtÉ@ÉCÉäÉìÉOÇóLå¯Ç…

ñ≥éã

-Xhprof

ÉqÅ[ÉvÉvÉçÉtÉ@ÉCÉäÉìÉOÇóLå¯Ç…

ñ≥éã

-Xverify

ÉoÉCÉgÉRÅ[ÉhÇÃåüèÿÇóLå¯Ç…

ñ≥éã

MRJ ÇÃè´óàÇÃÉoÅ[ÉWÉáÉìÇ≈ÇÕÅADZÇÍÇÁÇÃÉtÉâÉOÇÇÊÇËëΩÇ≠ÉTÉ|Å[ÉgÇ≥ÇÍÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB

* -classpath Ç…ä÷Ç∑ÇÈíçà”: JDK 1.2 ÇΔìØólÅAê≥ãKÇÃÉVÉXÉeÉÄÉNÉâÉXÉpÉXÇ…Åuí«â¡ÅvÇéwíËÇ∑ÇÈÇæÇØÇ≈è\ï™Ç≈Ç∑ÅBclasses.zipÅAJDKClasses.zipÅAÇ‹ÇΩÇÕ rt.jar Çí«â¡Ç∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅBǻǮÅADZÇÍÇÁÇí«â¡Ç∑ÇÈÇΔÅAÉGÉâÅ[Ç™ï‘Ç≥ÇÍÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBÉNÉâÉXÉpÉXÇÃÉGÉìÉgÉäÇÕÅAê‚ëŒÉpÉXÇ‹ÇΩÇÕåªç›ÇÃçÏãΔÉfÉBÉåÉNÉgÉäÇ…ëŒÇ∑ÇÈëäëŒÉpÉXÇÃÇ«ÇøÇÁÇ≈LJǩNjǢNjÇπÇÒÅBÉfÉtÉHÉãÉgÇÃê›íËÇ≈ÅAåªç›ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇä‹ÇfiÉfÉBÉåÉNÉgÉäÇ™çÏãΔÉfÉBÉåÉNÉgÉäÇ…Ç»ÇËÇ‹Ç∑ÅB


Back to top

Process ÉIÉuÉWÉFÉNÉgÇÃèàóù

Runtime.exec ÉÅÉ\ÉbÉhÇ™ê≥èÌÇ…é¿çsÇ≥ÇÍÇÈÇΔÅAProcess ÉIÉuÉWÉFÉNÉgÇ™ï‘Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃÉIÉuÉWÉFÉNÉgÇégópÇ∑ÇÈÇΔÅAÉvÉçÉZÉXÇÃÉXÉeÅ[É^ÉXÇÃÉ`ÉFÉbÉNÅAÉvÉçÉZÉXÇÃã≠êßìIÇ»èIóπÅAÇ®ÇÊÇ—ÉvÉçÉZÉXÇÃì¸óÕ/èoóÕ/ÉGÉâÅ[ÉXÉgÉäÅ[ÉÄÇ÷ÇÃÉAÉNÉZÉXÇçsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

DZÇÍÇÁÇÃëÂïîï™ÇÕÉAÉhÉoÉ^ÉCÉYÇ≥ÇÍÇΩLJÇÃÇΔǵǃìÆçÏǵNjÇ∑Ç™ÅAå„Ç≈égópÇ∑ÇÈDZÇΔÇ…ÇÕñ‚ëËǙdžÇËÇ‹Ç∑ÅBǬNjÇËÅAMac OS Ç…ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ìYïtÇ≥ÇÍÇΩÉeÉLÉXÉgÉXÉgÉäÅ[ÉÄÇΔǢǧäTîOǙǻǢÇΩÇflÅAǪÇÍÇÁÇ…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇÕà”ñ°ÇǻǵNjÇπÇÒÅBProcess Ç…í èÌÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ä÷òAÇ√ÇØÇÁÇÍÇΩÉXÉgÉäÅ[ÉÄÇóvãÅǵǃLJÅAMRJ ÇÕ null Çï‘Ç∑ÇæÇØÇ≈Ç∑ÅB

ÇΩÇæÇµÅAëOèqǵÇΩÇÊǧDžÅAJava ÉvÉçÉZÉXÇæÇØÇÕó·äOÇ≈Ç∑ÅBDZÇÍÇÁÇÕ Java ÉRÅ[ÉhÇæÇØÇé¿çsÇ∑ÇÈì¡éÍÇ»ÉvÉçÉZÉXÇ≈džÇÈÇΩÇflÅAÉRÉìÉ\Å[Éã I/O ÉXÉgÉäÅ[ÉÄÇéùÇøÅAProcess API ÇégǡǃÅAǪÇÍÇÁÇ…ÉAÉNÉZÉXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB


Back to top

ÉTÉìÉvÉã: ÉuÉâÉEÉUÇ≈Çà URL ÇÃÉIÅ[ÉvÉì

éüÇ…ÅALevi Brown Ç…ÇÊÇÈÉTÉìÉvÉãÉRÅ[ÉhÇé¶ÇµÇ‹Ç∑ÅBDZÇÃÉTÉìÉvÉãÉRÅ[ÉhÇÕÅAWeb ÉuÉâÉEÉUÇ≈ URL ÇÉIÅ[ÉvÉìÇ∑ÇÈÇΩÇflÇÃÉNÉçÉXÉvÉâÉbÉgÉtÉHÅ[ÉÄ savvy Ç»ï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅBDZÇÃÉTÉìÉvÉãÉRÅ[ÉhÇé¿çsÇ∑ÇÈÇΔÅAÉÜÅ[ÉUÇ™í èÌégópǵǃǢÇÈ Web ÉuÉâÉEÉUÇåüçıÇ∑ÇÈÇΩÇflÅAÉÜÅ[ÉUÇ…ì¸óÕÇóvãÅÇ∑ÇÈÉtÉ@ÉCÉãÉ_ÉCÉAÉçÉOÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

import java.awt.Frame;
                  import java.awt.FileDialog;
                  import java.io.File;
                  import java.io.IOException;
                  
                  public class ExecTest extends Frame
{
                  
    public static void main(String[] args)
    {
        new ExecTest();
        System.exit(0);
    }
                  
    public ExecTest()
    {
        String browserName;
        String url = "http://developer.apple.com/java/";
                  
        //égópÇ∑ÇÈÉuÉâÉEÉUÇÉÜÅ[ÉUÇ…åüçıÇ≥ÇπÇÈÉtÉ@ÉCÉãÉ_ÉCÉAÉçÉOÇÉZÉbÉgÉAÉbÉvÇ∑ÇÈ
        FileDialog fileDialog = new java.awt.FileDialog(this);
        fileDialog.setMode(FileDialog.LOAD);
        fileDialog.setTitle("Choose the Web browser to use:");
        fileDialog.setVisible(true);
                  
        //É_ÉCÉAÉçÉOÇ©ÇÁÉpÉXèÓïÒÇéÊìæÇµÇƒÅAǪÇÍÇåüèÿÇ∑ÇÈ
        String resultPath = fileDialog.getDirectory();
        String resultFile = fileDialog.getFile();
        fileDialog.dispose();
        if(resultPath != null && resultPath.length() != 0
                   && resultFile != null && resultFile.length() != 0)
        {
            File file = new File(resultPath + resultFile);
            if(file != null)
            {
                browserName = file.getPath();
                  
                try{
                    //ÉuÉâÉEÉUÇãNìÆÇµÅAñ⁄ìIÇà URL ÇìnÇ∑
                    Runtime.getRuntime().exec(new String[] {browserName, url});
                }
                catch (IOException exc)
                {
                    exc.printStackTrace();
                }
            }
        }
    }
}

é¿ç€Ç…égópÇ∑ÇÈèÍçáÇÕÅADZÇÃÉTÉìÉvÉãÇèCê≥ǵǃÅAÉuÉâÉEÉU (browserName) ÇÃà íuÇèâä˙ê›íËÉtÉ@ÉCÉãÇ…äiî[ǵÅAÉLÉÉÉbÉVÉÖÇ…äiî[Ç≥ÇÍÇΩÉuÉâÉEÉUÇ™å©Ç¬Ç©ÇÁǻǢèÍçáÇæÇØÉÜÅ[ÉUÇ…ÉuÉâÉEÉUÇÃéwíËÇóvãÅÇ∑ÇÈÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBÉvÉçÉìÉvÉgÇÃï∂éöóÒÇÉçÅ[ÉJÉâÉCÉYÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB

Ç‹ÇΩÅAëOèqǵÇΩÇÊǧDžÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÉVÉOÉlÉ`ÉÉÇ…ÇÊǡǃÉuÉâÉEÉUÇåüçıǵÇΩÇËÅAJConfig ÇégǡǃÅAURL ÇÉIÅ[ÉvÉìÇ∑ÇÈÉvÉçÉZÉXëSëÃÇèàóùÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB


Further References


Back to top


çXêVì˙: 1999 îN 5 åé 17 ì˙